package org.projetjava.metier.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.projetjava.metier.model.Parcours;

public class ParcoursDao {

	private Connection con;
	
	private PreparedStatement prepStatRechNomExact = null;
	private PreparedStatement prepStatRechPartieNom = null;
	private PreparedStatement prepStatRechNomDescription = null;
	
	public ParcoursDao()
	{
		Bdd bdd = new Bdd();
		
		this.con = bdd.getConnection();
		
		bdd = null;
	}
	
	public List<String> rechercheParNomExact(String recherche)
	{
		List<String> listResultat = new ArrayList<>();
		try {
		
			if(this.prepStatRechNomExact == null)
			{
				this.prepStatRechNomExact = this.con.prepareStatement("SELECT Libelle_Parcours FROM Parcours WHERE Libelle_Parcours = ?");
			}
			
			this.prepStatRechNomExact.setString(1, recherche);
		     
		    //L'objet ResultSet contient le r�sultat de la requ�te SQL
		    ResultSet result = this.prepStatRechNomExact.executeQuery();
		      
		      
		     
		    while(result.next()){         
		    	listResultat.add(result.getObject(1).toString());
		    }

		    result.close();
	         
		} catch (SQLException e) { 
			e.printStackTrace();
	    }
	  return listResultat;	
	}
	
	public List<String> rechercheParNon(String recherche)
	{
		String like = "%" + recherche + "%";  
		List<String> listResultat = new ArrayList<>();
		
		try {
		
			if(this.prepStatRechPartieNom == null)
			{
				this.prepStatRechPartieNom = this.con.prepareStatement("SELECT Libelle_Parcours FROM Parcours WHERE Libelle_Parcours LIKE ?");
			}
			
			this.prepStatRechPartieNom.setString(1, like);
		     
		    //L'objet ResultSet contient le r�sultat de la requ�te SQL
		    ResultSet result = this.prepStatRechPartieNom.executeQuery();

		    while(result.next()){         
		    	listResultat.add(result.getObject(1).toString());
		    }

		    result.close();
	         
		} catch (SQLException e) { 
			e.printStackTrace();
	    }
	  return listResultat;
		
	}
	
	public List<String> rechercheParLibelleDescription(String recherche)
	{
		String like = "%" + recherche + "%"; 
		List<String> listResultat = new ArrayList<>();
		
		try {
		
			if(this.prepStatRechNomDescription == null)
			{
				this.prepStatRechNomDescription = this.con.prepareStatement("SELECT Libelle_Parcours FROM Parcours WHERE Libelle_Parcours LIKE ? OR Texte_Description_Parcours LIKE ?");
			}
			
			this.prepStatRechNomDescription.setString(1, like);
			this.prepStatRechNomDescription.setString(2, like);
		     
		    //L'objet ResultSet contient le r�sultat de la requ�te SQL
		    ResultSet result = this.prepStatRechNomDescription.executeQuery();

		    while(result.next()){         
		    	listResultat.add(result.getObject(1).toString());
		    }

		    result.close();
	         
		} catch (SQLException e) { 
			e.printStackTrace();
	    }
	  return listResultat;
		
	}
	
	public Parcours selectionLieu(String libelle)
	{
		Parcours parcours = new Parcours();
		
		return parcours;
	}
}
